710 IF T1$ = T2$ THEN C = C +1: GOSUB 1590: GOTO 760
720 C = 0
730 IF T1 <T2 THEN NV$(IC +1) = T1$ +T2$:NV$(IC +2) = T2$ +T1$:NV$(IC +3) = T1$ +T1$:NV$(IC +4) = T2$ +T2$:IC = IC +4
740 IF T1 >T2 THEN HV = T1: GOTO 760
750 HV = T2
760 IF ER = 1 THEN VTAB 18: PRINT "ILLEGAL ROMAN NUMERAL, PRESS <";: INVERSE : PRINT "RETURN";: NORMAL : PRINT "> TOCONTINUE.";: POKE -16368,0: GET K$: GOTO 300
770 REM ===
780 REM === ROMAN NUMERAL CALCULATION
790 REM ===
800 IF T1 <T2 THEN T1 = -T1
810 DN = DN +T1
820 T1 = 0:T2 = 0
830 NEXT X
840 REM ===
850 REM === PRINT THE RESULT
860 REM ===
870 PRINT : PRINT "THE DECIMAL EQUIVALENT OF ";: INVERSE : PRINT RN$;: NORMAL : PRINT
880 PRINT "IS.....";: INVERSE : PRINT DN;: NORMAL : PRINT
890 REM ===============
900 REM ASK TO CONTINUE
910 REM ===============
920 PRINT : PRINT "DO YOU WISH TO DO ANOTHER": PRINT "CONVERSION (";: INVERSE : PRINT "Y/N";: NORMAL : PRINT ") ";
930 POKE -16368,0: GET K$: IF K$ = "Y" OR K$ = "y" THEN GOTO 120
1090 IF LEN(DN$) <4 THEN DN$ = "0" +DN$: GOTO 1090: REM PAD TO 4 CHARACTERS
1100 FOR Y = 1 TO LEN(DN$): IF MID$ (DN$,Y,1) <"0" OR MID$ (DN$,Y,1) >"9" THEN PRINT : PRINT "ILLEGAL ENTRY! PLEASE PRESS <";: INVERSE : PRINT "RETURN";: NORMAL : PRINT ">": PRINT "TO CONTINUE: ";: POKE -16368,0: GET K$: GOTO 990
1110 NEXT Y
1120 IF LEN(DN$) >4 THEN PRINT : PRINT "NUMBER MUST BE ";: INVERSE : PRINT "9999";: NORMAL : PRINT " OR LESS.": PRINT "PRESS <";: INVERSE : PRINT "RETURN";: NORMAL : PRINT "> TO CONTINUE: ";: POKE -16368,0: GET K$: GOTO 990
1130 IF VAL(DN$) < = 0 THEN PRINT : PRINT "NUMBER MUST BE GREATER THAN ZERO.": PRINT "PLEASE PRESS <";: INVERSE : PRINT "RETURN";: NORMAL : PRINT "> TO CONTINUE: ";: POKE -16368,0: GET K$: GOTO 990
1140 REM ===
1150 REM ===CONVERT ONE'S
1160 REM ===
1170 O$ = RIGHT$(DN$,1)
1180 IF O$ = "0" THEN RN$ = "": GOTO 1270
1190 IF O$ <"4" THEN FOR Y = 1 TO VAL(O$):RN$ = RN$ +"I": NEXT Y: GOTO 1270
1200 IF O$ = "4" THEN RN$ = RN$ +"IV": GOTO 1270
1210 IF O$ = "5" THEN RN$ = RN$ +"V": GOTO 1270
1220 IF O$ < = "8" THEN FOR Y = 6 TO VAL(O$):RN$ = RN$ +"I": NEXT Y:RN$ = "V" +RN$: GOTO 1270
1230 IF O$ = "9" THEN RN$ = "IX": GOTO 1270
1240 REM ===
1250 REM === CONVERT TENS
1260 REM ===
1270 TE$ = MID$ (DN$,3,1)
1280 IF TE$ = "0" THEN GOTO 1370
1290 IF TE$ < = "3" THEN FOR Y = 1 TO VAL(TE$):RN$ = "X" +RN$: NEXT Y: GOTO 1370
1300 IF TE$ = "4" THEN RN$ = "XL" +RN$: GOTO 1370
1310 IF TE$ = "5" THEN RN$ = "L" +RN$: GOTO 1370
1320 IF TE$ < = "8" THEN FOR Y = 6 TO VAL(TE$):X$ = X$ +"X": NEXT Y:RN$ = "L" +X$ +RN$: GOTO 1370
1330 IF TE$ = "9" THEN RN$ = "XC" +RN$: GOTO 1370
1340 REM ===
1350 REM ===CONVERT HUNDREDS
1360 REM ===
1370 H$ = MID$ (DN$,2,1)
1380 IF H$ = "0" THEN GOTO 1470
1390 IF H$ < = "3" THEN FOR Y = 1 TO VAL(H$):RN$ = "C" +RN$: NEXT Y: GOTO 1470
1400 IF H$ = "4" THEN RN$ = "CD" +RN$: GOTO 1470
1410 IF H$ = "5" THEN RN$ = "D" +RN$: GOTO 1470
1420 IF H$ < = "8" THEN FOR Y = 6 TO VAL(H$):C$ = C$ +"C": NEXT Y:RN$ = "D" +C$ +RN$: GOTO 1470
1430 IF H$ = "9" THEN RN$ = "CM" +RN$: GOTO 1470
1440 REM ===
1450 REM ===CONVERT THOUSANDS
1460 REM ===
1470 TH$ = LEFT$(DN$,1)
1480 IF TH$ = "0" THEN GOTO 1530
1490 FOR Y = 1 TO VAL(TH$):RN$ = "M" +RN$: NEXT Y
1500 REM ===
1510 REM === PRINT THE RESULT
1520 REM ===
1530 PRINT : PRINT "THE ROMAN EQUIVALENT OF ";: INVERSE : PRINT DN$;: NORMAL : PRINT
1540 PRINT "IS.....";: INVERSE : PRINT RN$;: NORMAL : PRINT
1550 GOTO 920: REM SEE IF USER WANTS TO DO MORE
1560 REM ==========================
1570 REM ERROR CHECKING SUBROUTINES
1580 REM ==========================
1590 ER = 0
1600 HV = T1
1610 IF T1$ = "M" AND C < = 8 THEN RETURN
1620 IF T1$ = "C" AND C < = 2 THEN RETURN
1630 IF T1$ = "X" AND C < = 2 THEN RETURN
1640 IF T1$ = "I" AND C < = 2 THEN RETURN
1650 ER = 1: RETURN
1660 ER = 0
1670 TP$ = T1$ +T2$
1680 FOR Y = 1 TO IC
1690 IF TP$ = NV$(Y) THEN ER = 1
1700 NEXT Y
1710 RETURN
1720 DATA "IM","VM","XM","LM","DM","ID","VD","XD","LD","IC","VC","LC","IL","VL","VX"